/**
1.集合输出
前面我们已经学习了集合的基本操作，很多情况下，我们需要把集合的内容进行输出，也就是遍历集合。
遍历集合的方式有以下几种：
1.Iterator
2.ListIterator
3.enumeration
4.foreach
 */
/*
package com.leo.第九章_集合;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Vector;
import java.util.ListIterator;
public class U9_L4_Iterator接口_4接口 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//1.0 配合Vector
		enumeration(linkhashset());
		//1.2 配合Arraylist
		listiterator(linkhashset());
		//1.2 
		iterator(linkhashset());
		//1.5
		foreach(linkhashset());	
	}
	private static Collection linkhashset() {
		Cat c=new Cat("xiao hong",5,0);
		Cat c1=new Cat("xiao fang",3,1);
		Cat c2=new Cat("xiao qu",1,2);
		Collection<Cat>lhs=new LinkedHashSet<>();
		lhs.add(c1);
		lhs.add(c2);
		lhs.add(c);
		return lhs;
	}
	//1.0版本 vector 配 enumeration 原始版本 c++里面也有用到
	private static void enumeration(Collection<Cat> c) {
		Vector<String> vs=new Vector();
		vs.add("tom");
		vs.add("jimy");
		vs.add("lucy");
		Enumeration<String> er=(vs.elements());
		System.out.println("------enumeration-------");
		while(er.hasMoreElements()) {
			System.out.println(er.nextElement());
		}
	}
	//JDK1.2版 可来回滚
	private static void listiterator(Collection<Cat> c) {
		List<Cat>arraylist=new ArrayList<>();
		arraylist.add(new Cat("aa",2,0));
		arraylist.add(new Cat("vv",3,1));
		arraylist.add(new Cat("cc",4,2));
		ListIterator<Cat> lt=arraylist.listIterator();
		System.out.println("------listIterator-------");
		while(lt.hasNext()) {
			System.out.println(lt.next());	
		}
		System.out.println("------(RollBack)-------");
		while(lt.hasPrevious()) {
			System.out.println(lt.previous());
		}
	}
	//JDK1.5之前（统一版的迭代模式）  
	private static void iterator(Collection<Cat> c) {
		Iterator iterator=c.iterator();
		System.out.println("------iterator-------");
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		 
		}	
	}
	//foreach 1.5以后分裂版 
	private static void foreach(Collection<Cat> c) {
		System.out.println("------foreach-------");
		for(Cat ele:c) {
			System.out.println(ele);
		}
		
		List<Cat> list=new ArrayList();
		list.add(new Cat("bb",2,0));
		list.add(new Cat("cc",3,1));
		list.add(new Cat("aa",4,2));
		//1.lambda表达式 泛型的包装类 +对象 -> 打印对象
		list.forEach((Cat cat)->{System.out.println("this: "+cat);});
		//2.缩写
		list.forEach(System.out::println);
		//待定有问题
		//list.forEach(new MyConsumer());
	}
}

class Cat{
	String name;
	int age;
	int id;
	 
	public Cat(String name, int age, int id) {
		super();
		this.name = name;
		this.age = age;
		this.id = id;
	}
	@Override
	public String toString() {
		return "Cat [name=" + name + ", age=" + age + ", id=" + id + "]";
	}
	
}
*/